查看原文
其他

Stata结果输出:强大的etable命令

连享会 连享会 2023-10-24

👇 连享会 · 推文导航 | www.lianxh.cn

连享会课程 · 2023 暑期班

编译: 姜昊 (华东师范大学)
邮箱: HaoJiang0204@outlook.com

温馨提示: 文中链接在微信中无法生效。请点击底部「阅读原文」。或直接长按/扫描如下二维码,直达原文:


目录

  • 1. etable 介绍

    • 1.1 命令介绍

    • 1.2 语法结构及相关选项说明

  • 2. 案例介绍

    • 2.1 案例1

    • 2.2 案例2

    • 2.3 案例3

    • 2.4 案例4

    • 2.5 案例5



1. etable 介绍

1.1 命令介绍

目前Stata 软件有着众多的实证结果输出命令,对此,连享会也对其进行梳理总结,主要包括 asdocxxx2docxoutreg2logout 以及esttab 等命令,通过在 Stata 中输入命令 lianxh 结果输出 即可获取使用方法,以及使用的环境需求,此处不再进行赘述。

本次 Stata17 更新之后,令我印象最为深刻的是官方推出了一款专门用于回归估计结果定制化输出的命令——etable,该命令对中文的支持十分友好,克服了结果输出乱码的问题,并且该命令 Stata17 更新后软件自带的命令,这也免去了下载外部命令的步骤。接下来,直接开始介绍该命令如何使用。

1.2 语法结构及相关选项说明

etable命令语法结构如下:

. help etable
* 具体语法结构如下
. etable [, options]
  • estimates(namelist):指定存储在内存中的回归结果,其中 namelist 通过命令 est store name 存储在Stata 的内存中

  • margins:展示回归结果边际效应,须在回归后使用 margins 命令,该选项才能生效

  • column(column_header):指定输出回归结果的列名,包括以下6种,分别为:depvar,则显示被解释变量名,也为默认选项;dvlabel,则显示被解释变量的变量标签;command,则显示该回归结果的估计命令;title,则显示估计该回归结果的名称,如使用 Ols 估计则显示 Linear regressionestimates,则显示 est store namenameindex,则按照阿拉伯数字从1开始依次显示

  • append:在表格前一列结果后追加当前的回归结果

  • replace:用最新的回归结果替换表中当前回归结果

  • keep(coeflist):报告指定的变量系数,并且系数展示顺序与 coeflist 保持一致

  • cstat(cstat[, cstat_opts]):报告系数的统计量,其中,主要包括以下结果,依次是_r_b_r_se_r_z_r_z_abs_r_p_r_lb_r_ub_r_ci_r_hide,其含义分别为报告估计系数、估计系数标准误、检验统计量、检验统计量绝对值、p值、左侧置信区间、右侧置信区间、完整置信区间和隐藏系数估计结果

  • mstat(mstat[, mstat_opts]):报告模型统计量,其中,主要包括以下结果,依次是NaicbicFchi2llr2r2_arankscalar_r_hide,其含义分别为观测值数目、AIC信息准则、BIC信息准则、F统计量、卡方统计量、对数似然值、拟合优度、调整拟合优度、拟合模型的秩、存在e()中的任何标量和隐藏模型统计量

  • stars([starspec][, stars_opts]):自定义系数星星的规则,默认情况为 p 值小于0.05标记1颗星,小于0.01标记两颗星,这与我们通常的标记准则存在差异,因此需要重新定义规则,需要在该命令后增加stars(0.10 "*" .05 "**" .01 "***", attach(_r_b)),这样就使其与我们平常使用的标记规则相一致,另外,若要系数后显示星号,需要额外添加 showstars 命令选项,而且表格脚注部分若显示星号标记规则,需要添加 showstarsnote

  • title(string):指定表格标题,中英文均支持

  • note(string):指定表格的脚注,中英文均支持

  • export(filename.suffix[, export_opts]):指定输出表格的文件名称与格式,该命令支持docxhtmlpdfxlsxxlstexsmcltxtmarkdownmd等格式,export_opts选项中可以使用 replace 覆盖当前路径下同名的文件

2. 案例介绍

接着,为了进一步直观感受各个选项的作用,观察如何个性化定制输出自己的回归表格,本篇推文通过以下几个案例进行说明,展示etable命令在不同情境下的效果。

2.1 案例1

为了便捷,本次推文均以Stata17自带的数据集为例进行演示,首先如何展示单个回归结果,具体代码如下:

. sysuse "auto.dta", clear

. reg price mpg rep78 trunk weight, robust

. etable, cstat(_r_b) cstat(_r_se) ///
cstat(_r_ci) mstat(N) mstat(r2) ///
showstars showstarsnote ///
export("result.docx",replace)

输出结果如下:

-----------------------------------------------
price
-----------------------------------------------
Mileage (mpg) -63.210
(84.659)
[-232.336 105.915]
Repair record 1978 884.448 **
(285.421)
[314.255 1454.641]
Trunk space (cu. ft.) -99.367
(83.723)
[-266.624 67.889]
Weight (lbs.) 2.442 *
(0.928)
[0.589 4.295]
Intercept -1540.729
(3776.598)
[-9085.351 6003.893]
Number of observations 69
R-squared 0.38
-----------------------------------------------
** p<.01, * p<.05

2.2 案例2

其次,也是很多人较为关心的,如何将多个回归放在一张表格中演示,同时也给表格修改和增加一些要素,比如表名,列名以及表注等,具体代码如下:

. sysuse "auto.dta", clear

. reg price mpg rep78 trunk weight, robust
. est store m1

. reg price mpg rep78 trunk weight length, robust
. est store m2

. reg price mpg rep78 trunk weight length turn, robust
. est store m3

. etable, ///
estimates(m1 m2 m3) column(index) ///
keep(rep78 trunk weight length turn) ///
cstat(_r_b) cstat(_r_se) mstat(N) mstat(r2) ///
stars(0.10 "*" .05 "**" .01 "***", attach(_r_b)) ///
showstars showstarsnote ///
title("表1 etable命令整理的回归结果") ///
note("数据来源:auto数据库") ///
export("result.docx",replace)

输出结果如下:

表1 etable命令整理的回归结果
----------------------------------------------------------------
1 2 3
----------------------------------------------------------------
Repair record 1978 884.448 *** 909.522 *** 744.266 **
(285.421) (280.763) (316.631)
Trunk space (cu. ft.) -99.367 2.922 1.412
(83.723) (63.188) (65.100)
Weight (lbs.) 2.442 ** 4.963 ** 5.295 ***
(0.928) (1.892) (1.946)
Length (in.) -115.538 * -96.593
(59.959) (62.210)
Turn circle (ft.) -195.353
(161.207)
Number of observations 69 69 69
R-squared 0.38 0.44 0.46
----------------------------------------------------------------
*** p<.01, ** p<.05, * p<.1
数据来源:auto数据库

2.3 案例3

接下来,将其换成logistic回归模型,并将多个回归结果共同展示:

. webuse nhanes2l,clear
(Second National Health and Nutrition Examination Survey)

. quietly logistic diabetes age i.sex i.race bmi
. est store m1

. quietly logistic diabetes age
. est store m2

. quietly logistic diabetes i.sex
. est store m3

. quietly logistic diabetes i.race
. est store m4

. quietly logistic diabetes bmi
. est store m5

. etable, estimates(m1 m2 m3 m4 m5) ///
column(index) cstat(_r_b) ///
cstat(_r_se) mstat(N) mstat(r2) ///
stars(0.10 "*" .05 "**" .01 "***", attach(_r_b)) ///
showstars showstarsnote ///
title("表2 etable命令整理Logistic回归结果") ///
note("数据来源:Second National Health and Nutrition Examination Survey")

输出结果如下:

表2 etable命令整理Logistic回归结果
--------------------------------------------------------------------
1 2 3 4 5
--------------------------------------------------------------------
Age 1.060 *** 1.061 ***
(0.004) (0.004)
Sex
Female 1.066 1.185 *
(0.102) (0.110)
Race
Black 1.860 *** 1.843 ***
(0.240) (0.227)
Other 1.410 1.010
(0.498) (0.348)
BMI 1.073 *** 1.089 ***
(0.009) (0.008)
Intercept 0.000 *** 0.002 *** 0.046 *** 0.047 *** 0.005 ***
(0.000) (0.000) (0.003) (0.002) (0.001)
N 10349 10349 10349 10349 10349
--------------------------------------------------------------------
*** p<.01, ** p<.05, * p<.1
数据来源:Second National Health and Nutrition Examination Survey

2.4 案例4

通常进行回归之后,我们会根据估计的模型进行预测,探究目标变量如何变化,具体代码如下:

. quietly logistic diabetes age i.sex i.race bmi
. margins race

Predictive margins Number of obs = 10,349
Model VCE: OIM
Expression: Pr(diabetes), predict()
------------------------------------------------------------------
| Delta-method
| Margin std. err. z P>|z| [95% conf. interval]
--------+---------------------------------------------------------
race |
White | .0444783 .0021181 21.00 0.000 .0403269 .0486298
Black | .0773012 .0078482 9.85 0.000 .061919 .0926834
Other | .0606597 .0188137 3.22 0.001 .0237854 .0975339
------------------------------------------------------------------

. etable, margins column(command)

------------------------------
margins
------------------------------
Race
White 0.044
(0.002)
Black 0.077
(0.008)
Other 0.061
(0.019)
Number of observations 10349
------------------------------

. margins sex

Predictive margins Number of obs = 10,349
Model VCE: OIM
Expression: Pr(diabetes), predict()
--------------------------------------------------------------
| Delta-method
| Margin std. err. z P>|z| [95% CI]
--------+-----------------------------------------------------
sex |
Male | .0466962 .0030234 15.44 0.000 .0407 .0526
Female | .0494875 .0028336 17.46 0.000 .0439 .0550
--------------------------------------------------------------

. etable, margins column(command) append

--------------------------------------
margins margins
--------------------------------------
Race
White 0.044
(0.002)
Black 0.077
(0.008)
Other 0.061
(0.019)
Sex
Male 0.047
(0.003)
Female 0.049
(0.003)
Number of observations 10349 10349
--------------------------------------

2.5 案例5

最后,考虑到不同期刊对于估计结果的小数点以及字体格式存在差异,因此如何自定义表格内容至关重要,当然,etable命令也当然支持,下面直接给出自定义字体格式和小数位代码:

. sysuse "auto.dta", clear

. reg price mpg rep78 trunk weight, robust
. est store m1

. reg price mpg rep78 trunk weight length, rob
. est store m2

. reg price mpg rep78 trunk weight length turn, rob
. est store m3

. etable, estimates(m1 m2 m3) column(index) keep(rep78 ///
trunk weight length turn) cstat(_r_b,font(,bond)) ///
cstat(_r_se) mstat(N, nformat(%9.3f)) ///
mstat(r2,nformat(%9.3g)) ///
stars(0.10 "*" .05 "**" .01 "***", attach(_r_b)) ///
showstars showstarsnote ///
title("表1 etable命令整理的回归结果") ///
note("数据来源:auto数据库") ///
export("result.docx")

输出结果如下:

表1 etable命令整理的回归结果
----------------------------------------------------------------
1 2 3
----------------------------------------------------------------
Repair record 1978 884.448 *** 909.522 *** 744.266 **
(285.421) (280.763) (316.631)
Trunk space (cu. ft.) -99.367 2.922 1.412
(83.723) (63.188) (65.100)
Weight (lbs.) 2.442 ** 4.963 ** 5.295 ***
(0.928) (1.892) (1.946)
Length (in.) -115.538 * -96.593
(59.959) (62.210)
Turn circle (ft.) -195.353
(161.207)
Number of observations 69.000 69.000 69.000
R-squared .376 .442 .461
----------------------------------------------------------------
*** p<.01, ** p<.05, * p<.1
数据来源:auto数据库
(collection ETable exported to file result.docx)

如此,一个完整的论文表格就完成了,以上就是 etable 命令用法的全部内容了 ,读者可以根据自己的数据类型调整相关选项得到想要的结果,从而为自己的文章添彩!

课程推荐:深度因果推断(2023年8月2-5日)
主讲老师:江艇
课程地点:西安·西北工业大学
🍓 课程主页https://www.lianxh.cn/news/835167275c3af.html

New! Stata 搜索神器:lianxhsongbl  GIF 动图介绍
搜: 推文、数据分享、期刊论文、重现代码 ……
👉 安装:
. ssc install lianxh
. ssc install songbl
👉  使用:
. lianxh DID 倍分法
. songbl all

🍏 关于我们

  • 连享会 ( www.lianxh.cn,推文列表) 由中山大学连玉君老师团队创办,定期分享实证分析经验。
  • 直通车: 👉【百度一下: 连享会】即可直达连享会主页。亦可进一步添加 「知乎」,「b 站」,「面板数据」,「公开课」 等关键词细化搜索。


您可能也对以下帖子感兴趣

连玉君Stata33讲:面板数据模型简介-FE和RE有何区别?
acreg:允许干扰项随意相关的稳健性标准误
Stata 权重设定-fweight-pweight
双环醇防治肝脏炎性损伤多学科专家共识
哪本研究方法教科书适合我:入门篇 | 学科教学

文章有问题?点此查看未经处理的缓存